package xnum

import (
	"encoding/json"
	"strconv"
)

type XInt64 int64

type XFloat64 float64

func (x *XFloat64) UnmarshalJSON(data []byte) error {
	// 尝试解析为整数
	var num float64
	if err := json.Unmarshal(data, &num); err == nil {
		*x = XFloat64(num)
		return nil
	}
	// 如果失败，尝试解析为字符串再转成整数
	var str string
	if err := json.Unmarshal(data, &str); err != nil {
		return err
	}
	num, err := strconv.ParseFloat(str, 64)
	if err != nil {
		return err
	}
	*x = XFloat64(num)
	return nil
}
